Class EigenvalueDecomposition
java.lang.Object
edu.claflin.finder.algo.clustering.struct.leading_eigenvector_struct.EigenvalueDecomposition
- All Implemented Interfaces:
Serializable
Eigenvalues and eigenvectors of a real matrix. Part of JAMAS and called in Matrix
for further details check the comment at the top of the Matrix class in this package.
If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
diagonal and the eigenvector matrix V is orthogonal.
I.e. A = V.times(D.times(V.transpose())) and
V.times(V.transpose()) equals the identity matrix.
If A is not symmetric, then the eigenvalue matrix D is block diagonal
with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
columns of V represent the eigenvectors in the sense that A*V = V*D,
i.e. A.times(V) equals V.times(D). The matrix V may be badly
conditioned, or even singular, so the validity of the equation
A = V*D*inverse(V) depends upon V.cond().
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate doubleprivate double[]Arrays for internal storage of eigenvalues.private double[]Arrays for internal storage of eigenvalues.private double[][]Array for internal storage of nonsymmetric Hessenberg form.private booleanSymmetry flag.private intRow and column dimension (square matrix).private double[]Working storage for nonsymmetric algorithm.private static final longprivate double[][]Array for internal storage of eigenvectors. -
Constructor Summary
ConstructorsConstructorDescriptionCheck for symmetry, then construct the eigenvalue decomposition Structure to access D and V. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidcdiv(double xr, double xi, double yr, double yi) getD()Return the block diagonal eigenvalue matrixdouble[]Return the imaginary parts of the eigenvaluesdouble[]Return the real parts of the eigenvaluesgetV()Return the eigenvector matrixprivate voidhqr2()private voidorthes()private voidtql2()private voidtred2()
-
Field Details
-
n
private int nRow and column dimension (square matrix). -
issymmetric
private boolean issymmetricSymmetry flag. -
d
private double[] dArrays for internal storage of eigenvalues. -
e
private double[] eArrays for internal storage of eigenvalues. -
V
private double[][] VArray for internal storage of eigenvectors. -
H
private double[][] HArray for internal storage of nonsymmetric Hessenberg form. -
ort
private double[] ortWorking storage for nonsymmetric algorithm. -
cdivr
private transient double cdivr -
cdivi
private transient double cdivi -
serialVersionUID
private static final long serialVersionUID- See Also:
-
-
Constructor Details
-
EigenvalueDecomposition
Check for symmetry, then construct the eigenvalue decomposition Structure to access D and V.- Parameters:
Arg- Square matrix
-
-
Method Details
-
tred2
private void tred2() -
tql2
private void tql2() -
orthes
private void orthes() -
cdiv
private void cdiv(double xr, double xi, double yr, double yi) -
hqr2
private void hqr2() -
getV
Return the eigenvector matrix- Returns:
- V
-
getRealEigenvalues
public double[] getRealEigenvalues()Return the real parts of the eigenvalues- Returns:
- real(diag(D))
-
getImagEigenvalues
public double[] getImagEigenvalues()Return the imaginary parts of the eigenvalues- Returns:
- imag(diag(D))
-
getD
Return the block diagonal eigenvalue matrix- Returns:
- D
-